package q08_myAtoi;

public class Solution_1 {
    public int myAtoi(String s) {
        long bin,res = 0;
        boolean flag = true;
        int i = 0;
        // 先检测最开始的一段，如果检测到非正负号或者数字，就可以返回了
        for (; i < s.length(); i++) {

            if (s.charAt(i) == ' ') {
                continue;
            }
            if(s.charAt(i) == '-'){
                flag = false;
                i++;
                break;
            }else if (s.charAt(i) == '+') {
                i++;
                break;
            } else if(!Character.isDigit(s.charAt(i))){
                return 0;
            }else{
                break;
            }

        }

        // 如果
        int j = i;
        int zeroCount = 0;
        for (; j < s.length(); j++) {

            if(!Character.isDigit(s.charAt(j))){
                break;
            }
            res = res * 10;
            bin = Integer.parseInt(String.valueOf(s.charAt(j)));
            if(bin == 0){
                zeroCount++;
            }
            res += bin;

            if ((int)res != res) {
                if (flag){
                    return (int)(Math.pow(2,32)-1);
                }else {
                    return (int)(0-Math.pow(2,32));
                }
            }
        }

        if (j - i - zeroCount > 10) {
            if (flag){
                return (int)(Math.pow(2,32)-1);
            }else {
                return (int)(0-Math.pow(2,32));
            }
        }

        if(flag){
            return ((int)res == res ? (int)res : (int)(Math.pow(2,32)-1));
        }else {
            // System.out.println("not");
            return ((int)res == res ? -(int)res : (int)(0-Math.pow(2,32)));
        }
    }
}
